﻿from __future__ import division
import Levenshtein
from unidecode import unidecode
from Tkinter import *
import ttk, time, win32api,win32gui,pickle,tkMessageBox,os,urllib,ast,ImageGrab,tkFileDialog
import smtplib,base64,time
from pytesser import *
from datoselophant import datoselophant
from datosiniciogame import datosiniciogame
import Image, ImageTk, random


##  LoL Stats is an application developed by Luis Rodenas under GNU GPL v3 Open Source License
##  Oficial webpage of the project: http://code.google.com/p/lol-leagueoflegends-stats/
##
##  historial[player]=[gameswithhim,victorieswithhim,gamesvshim,victoriesvshim,puntuacion,troll,afk]
##  opciones=[playername,siguientetamanohistorial,idioma,lolfolder,playernamereal,server]
##  


def comprobarversion():
    try:
##        Puede que dropbox cambie enlace con el tiempo...
        dirversionfile='https://dl.dropbox.com/s/q2hi87smhcl4gi8/version.txt?dl=1'
        versionnueva = urllib.urlopen(dirversionfile).read()
        versionnueva=float(versionnueva)
        if versionnueva>version:
            tkMessageBox.showinfo(title='LoL Stats - AutoUpdate',detail=dic[04],icon='info',message=dic[05])
    except:
        pass

def enviarhistorialgmail():
    try:
        filename = "historial.txt"
        jugnombre=unidecode(opciones[0])
# Read a file and encode it into base64 format
        fo = open(filename, "rb")
        filecontent = fo.read()
        fo.close()
        encodedcontent = base64.b64encode(filecontent)  # base64

        sender = 'lolstatsapp@gmail.com'
        reciever = 'lolstatsapp@gmail.com'

        marker = "AUNIQUEMARKER"

        body ="""
Historial {0} del jugador {1} enviado por LoL Stats.
""".format(len(historial),jugnombre)
# Define the main headers.
        part1 = """From: LoLStats <luisonoff@gmail.com>
To: Developer
Subject: LoL Stats Historial %s
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=%s
--%s
""" % (opciones[1],marker, marker)

# Define the message action
        part2 = """Content-Type: text/plain
Content-Transfer-Encoding:8bit

%s
--%s
""" % (body,marker)

# Define the attachment section
        part3 = """Content-Type: multipart/mixed; name=\"%s\"
Content-Transfer-Encoding:base64
Content-Disposition: attachment; filename=%s

%s
--%s--
""" %(filename, filename, encodedcontent, marker)
        message = part1 + part2 + part3
        username = 'lolstatsapp@gmail.com'  
        password = '123698745123698745' 
        try:
           smtpObj = smtplib.SMTP('smtp.gmail.com:587')
           smtpObj.starttls()
           smtpObj.login(username,password)  
           smtpObj.sendmail(sender, reciever, message)
           smtpObj.quit()  
##           print "Successfully sent email"
        except Exception:
            pass
##           print "Error: unable to send email"
    except:
        pass

def comprobarhistorialgrande():
    try:
        global opciones
        if len(historial)>opciones[1]:
##            Desactivo opcion de enviar por email
##            enviarhistorialgmail()
            opciones[1]+=200
            file = open('config.txt', 'w')
            pickle.dump(opciones, file)
            file.close()
    except:
        pass
    
def esquinaspantalla(*args):
    try:
        global evitabucleocr, esquinas
        try:
            indexventana= win32gui.FindWindow(None,'PVP.net Client')
            win32gui.SetForegroundWindow(indexventana) 
            esquinas=win32gui.GetWindowRect(indexventana)
  
        except:
            indexventana= win32gui.FindWindow(None,'Cliente PVP.net')
            win32gui.SetForegroundWindow(indexventana)
            esquinas=win32gui.GetWindowRect(indexventana)
        evitabucleocr=0
        return esquinas
    except:
        textoinfo.set(dic[01])
        pass

def imprimepantalla(*args):
    try:
##        import ImageGrab
        img = ImageGrab.grab()
        img.save('lol1.png','PNG')
    except:
        textoinfo.set(dic[01])
        pass

def ocr(esquinas):
    try:
        global jugadores, evitabucleocr, indexpropio
        jugadores=[]
        for i in range(0,5):
            a=image_file_to_string("corte{0}.jpg".format(i))
            if "\n" in a:
                b=a.strip('\n')
            jugadores.append(b)
##        ratiomax=0
##        for i in range(5):
##            ratiotemp=Levenshtein.ratio(jugadores[i],opciones[0])
##            if ratiotemp>0.6 and ratiotemp>ratiomax:
##                j=i
##                ratiomax=ratiotemp
####                print ratiomax
        mejoraocr()
        if opciones[0] in jugadores:
            indexpropio=jugadores.index(opciones[0])
            jugadores.remove(opciones[0])
##            print 'A la primera'
        elif evitabucleocr==0:
##            print 'en bucle'
            evitabucleocr=1
            imprimepantalla()
            cortaimagen(esquinas)
            ocr()
        else:
            pass

    except:
        textoinfo.set(dic[01])
        pass

def mejoraocr():
    try:
        global jugadores
        for i in range(len(jugadores)):
            if "\n" in jugadores[i]:
                jugadores[i].replace("\n","")
                
##    Aqui puede haber errores
        listanombres=historial.keys()
        if opciones[0] in listanombres:
            pass
        else:
            listanombres.append(opciones[0])
        for i in range(len(jugadores)):
            ratiomax=0
            distmin=3
            for j in range(len(listanombres)):
                disttemp=Levenshtein.distance(jugadores[i],listanombres[j])
                if disttemp<distmin:
                    indicebueno=j
                    distmin=disttemp
                elif disttemp==distmin:
                    ratiotemp=Levenshtein.ratio(jugadores[i],listanombres[j])
                    if ratiotemp>ratiomax:
                        indicebueno=j
                        ratiomax=ratiotemp

            if distmin<3 or ratiomax>=0.3:
                jugadores[i]=listanombres[indicebueno]

    except:
        textoinfo.set(dic[01])
        pass

def nombresmanual(*args):
    try:
        global jugadoresocr,nm
##        nm = Tk()
        nm = Toplevel(root)
        nm.title("LoL Stats - Check player names")
        nm.geometry('-10+50')
        nmframe = ttk.Frame(nm, padding="20 0 20 20")
        nmframe.grid(column=0, row=0, sticky=(N, W, E, S))

        fuente='Sans-serif'
        tamano='16'
        ##        ttk.Label(tframe, text=dic[12], font="{0} {1} bold".format(fuente,tamano)).grid(column=1, row=1, sticky=(W), ipady=15)
##        jugadores=['LuisOnOff','Pepe','Lucas','Ermenegildo','a87sd']
        jugadoresocr=[0,0,0,0,0]
        suma=0
        for i in range(len(jugadores)):
            try:
                if i==indexpropio:
                    suma=1
        
                im = Image.open('cortemini{0}.jpg'.format(i+suma))
                corte = ImageTk.PhotoImage(im)
                label=Label(nmframe, image=corte)
                label.image=corte
                label.grid(column=1, row=i+1, sticky=(W), ipady=18)#Determina la altura de las filas  
            except:
                pass
            jugadoresocr[i]=StringVar()
            jugadoresocr[i].set(jugadores[i])
                                
            ttk.Label(nmframe, text='=',font="{0} {1} bold".format(fuente,tamano)).grid(column=2, row=i+1, sticky=(W))
                                
            jugadorocr = ttk.Entry(nmframe, width=30, textvariable=jugadoresocr[i])
            jugadorocr.grid(column=3, row=i+1, sticky=(W))

        botoncontinuar=ttk.Button(nmframe, text=dic[47], command=botoncorregirnombres)
        botoncontinuar.grid(column=1,columnspan=3, row=6)
            

        for child in nmframe.winfo_children(): child.grid_configure(padx=2, pady=5)
##        nm.mainloop() 
    except:
        textoinfo.set(dic[01])
        pass

def obteninfo():
    try:
        global infojugadores, key, dicconversion2
        infojugadores=[0,0,0,0,0]
        textoinfo.set(dic[43])
        root.update_idletasks()

##        Hago random para elegir key
        keis=["Z1TMfh3wAFvk4cRejiXn","JcBPXwgPQF0OnCbweCuE","uhCcec9iesfnmQ1AuoHf","Hhi9BsqL4WEfkPOVeWOG"]
        key=keis[random.randint(0, 3)]

##        Obtengo y genero diccionario de conversion numeros-campeones

        filehandle4 = urllib.urlopen('http://elophant.com/api/v1/champions?key={0}'.format(key))
        var4=filehandle4.read()
        dicconversion=ast.literal_eval(var4)
        filehandle4.close()
        dicconversion2={}
        for i in range(len(dicconversion)-1):
            i=i+1
            dicconversion2['{0}'.format(dicconversion[i]['id'])]='{0}'.format(dicconversion[i]['name'])
        
        for i in range(len(jugadores)):
            infojugadores[i]=datoselophant(jugadores[i],opciones[5],dicconversion2,key)
##        print jugadores
##        print infojugadores

    except:
##        textoinfo.set(dic[01])
        textoinfo.set('error obteninfo')
        pass

def cortaimagen(esquinas):
    try:
        alto=esquinas[3]-esquinas[1]
        ancho=esquinas[2]-esquinas[0]
        salto=round(0.125*alto)
        sepizquierda=round(0.025*ancho)
        separriba=round(0.17*alto)
        sepderecha=round(0.175*ancho)
        sepabajo=round(0.192*alto)
        im = Image.open('lol1.png')
        for i in range(0,5):
            box=[esquinas[0]+int(sepizquierda),esquinas[1]+int(separriba+i*salto),esquinas[0]+int(sepderecha),esquinas[1]+int(sepabajo+i*salto)]
            grande=((box[2]-box[0])*20,(box[3]-box[1])*20)
            grande2=((box[2]-box[0])*2,(box[3]-box[1])*2)
            region=im.crop(box)
            region2=region.resize(grande2,Image.BICUBIC)
            region2.save("cortemini{0}.jpg".format(i), "JPEG")
            region=region.resize(grande,Image.BICUBIC)
            region.save("corte{0}.jpg".format(i), "JPEG")

##        textoinfo.set('Obteniendo informacion...')
    except:
        textoinfo.set(dic[01])
        pass

def leerhistorial(*args):
    try:
        global historial
        file=open('historial.txt', 'r')
        historial = pickle.load(file)
        file.close()
##        return historial
    except:
        historial={}
##        De prueba en vdd estara vacio
##        historial={'LuisOnOff':[1,1,3,3,0,0,0],'Pepe':[20,9,5,2,0,0,0]}
##        return historial

def leerdic(*args):
    try:
        global dic
        try:
            file=open('config.txt', 'r')
            opciones = pickle.load(file)
            file.close()
            if opciones[2]==0:
                dicfile='en_US.txt'
            if opciones[2]==1:
                dicfile='es_ES.txt'
        except:
            dicfile='en_US.txt'
        file=open(dicfile, 'r')
        dic = pickle.load(file)
        file.close()
    except:
        textoinfo.set(dic[01])
        pass

def cargaropciones(*args):
    try:
        global opciones
        file=open('config.txt', 'r')
        opciones = pickle.load(file)
        file.close()
        if len(opciones)<6:
            textoinfo.set(dic[06])
            if len(historial)>100:
                opciones=['',round(len(historial),-2),0,"C:/Riot Games/League of Legends",'','euw']
            else:
                opciones=['',100,0,"C:/Riot Games/League of Legends",'','euw']
    except:
        if len(historial)>100:
            opciones=['',round(len(historial),-2),0,"C:/Riot Games/League of Legends",'','euw']
        else:
            opciones=['',100,0,"C:/Riot Games/League of Legends",'','euw']
        textoinfo.set(dic[06])


def guardaropciones(nombre,c,idioma,server):
    try:
        global opciones
        opciones[0]=unidecode(nombre.get())
        opciones[4]=nombre.get()
        opciones[5]=server.get()
        opciones[2]=int(idioma.get())
##        Guardo fichero config.txt
        file = open('config.txt', 'w')
        pickle.dump(opciones, file)
        file.close()
        leerdic()
        c.destroy()
        textoinfo.set(dic[03])
    except:
        textoinfo.set(dic[01])
##        print 'Error'
        pass

def cambiarfolder(foldername):
    try:
        global opciones
        dirname = tkFileDialog.askdirectory(parent=root,initialdir="/",title=dic[39])
        opciones[3]=dirname
        foldername.set(opciones[3])
    except:
        textoinfo.set(dic[01])
        pass

def opciones():
    try:
        c = Toplevel(root)
        c.title("LoL Stats - Configuration")
        c.geometry('-5+50')
        cframe = ttk.Frame(c, padding="20 20 20 20")
        cframe.grid(column=0, row=0, sticky=(N, W, E, S))
##        tframe.columnconfigure(0, weight=1)
##        tframe.rowconfigure(0, weight=1)
        nombre = StringVar()
        idioma = StringVar()
        server = StringVar()
        foldername = StringVar()
        idioma.set(opciones[2])
        server.set(opciones[5])
        foldername.set(opciones[3])
        try:
            nombre.set(opciones[4])
        except:
            pass

        ttk.Label(cframe, text=dic[07]).grid(column=1, row=1, sticky=(W))
        ttk.Label(cframe, text=dic[8]).grid(column=1,columnspan=4, row=2, sticky=(W))
        entrada_nombre = ttk.Entry(cframe, width=25, textvariable=nombre)
        entrada_nombre.grid(column=2, row=1,columnspan=3, sticky=(W, E))
        ttk.Label(cframe, text=dic[46]).grid(column=1, row=3, sticky=(W))
        ttk.Radiobutton(cframe, text='NA', variable=server, value='na').grid(column=2, row=3, sticky=(W))
        ttk.Radiobutton(cframe, text='EUW', variable=server, value='euw').grid(column=3, row=3, sticky=(W))
        ttk.Radiobutton(cframe, text='EUNE', variable=server, value='eune').grid(column=4, row=3, sticky=(W))
        ttk.Label(cframe, text='-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -').grid(column=1,columnspan=4, row=4, sticky=())
        ttk.Label(cframe, text=dic[40]).grid(column=1, row=5, sticky=(W))
        ttk.Label(cframe, textvariable=foldername).grid(column=2,columnspan=2, row=5, sticky=(W))
        botonfolder=ttk.Button(cframe, text=dic[41], command=lambda: cambiarfolder(foldername))
        botonfolder.grid(column=4, row=5)
        ttk.Label(cframe, text='-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -').grid(column=1,columnspan=4, row=6, sticky=())
        ttk.Label(cframe, text=dic[36]).grid(column=1, row=7, sticky=(W))
        ttk.Radiobutton(cframe, text=dic[37], variable=idioma, value=1).grid(column=2, row=7, sticky=(W))
        ttk.Radiobutton(cframe, text=dic[38], variable=idioma, value=0).grid(column=3, row=7, sticky=(W))
        ttk.Label(cframe, text='-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -').grid(column=1,columnspan=4, row=8, sticky=())
        ttk.Label(cframe, text=dic[9]).grid(column=1, row=9, sticky=(W))
        ttk.Label(cframe, text="{0}".format(version)).grid(column=2, row=9, sticky=(W))
        ttk.Label(cframe, text=dic[10]).grid(column=1,columnspan=4, row=10, sticky=(W))
        botonguardaropciones=ttk.Button(cframe, text=dic[11], command= lambda: guardaropciones(nombre,c,idioma,server))
        botonguardaropciones.grid(column=1,columnspan=4, row=11)

        for child in cframe.winfo_children(): child.grid_configure(padx=8, pady=8)
        entrada_nombre.focus()
        c.mainloop()
    except:
        textoinfo.set(dic[01])
        pass


def mostrarinfo(*args):
    try:
        #esta linea se borra
##        global jugadores
        t = Toplevel(root)
        t.title("LoL Stats - Game History")
        t.geometry('-10+50')
        tframe = ttk.Frame(t, padding="20 0 20 20")
        tframe.grid(column=0, row=0, sticky=(N, W, E, S))
##        tframe.columnconfigure(0, weight=1)
##        tframe.rowconfigure(3, weight=1)
##        prueba = StringVar()
##        prueba.set('Prueba')
        fuente='Sans-serif'
        tamano='10'
        ttk.Label(tframe, text=dic[12], font="{0} {1} bold".format(fuente,tamano)).grid(column=1, row=1, sticky=(W), ipady=15)
        ttk.Label(tframe, text='ELO', font="{0} {1} bold".format(fuente,tamano)).grid(column=2, row=1, sticky=(W))
        ttk.Label(tframe, text=dic[44], font="{0} {1} bold".format(fuente,tamano)).grid(column=3, columnspan=5, row=1, sticky=())
        ttk.Label(tframe, text=dic[13], font="{0} {1} bold".format(fuente,tamano)).grid(column=8, columnspan=2, row=1, sticky=(W))
##        ttk.Label(tframe, text=dic[14], font="{0} {1} bold".format(fuente,tamano)).grid(column=9, row=1, sticky=(W))
        ttk.Label(tframe, text=dic[15], font="{0} {1} bold".format(fuente,tamano)).grid(column=10, columnspan=2, row=1, sticky=(W))
##        ttk.Label(tframe, text=dic[16], font="{0} {1} bold".format(fuente,tamano)).grid(column=11, row=1, sticky=(W))
        ttk.Label(tframe, text=dic[17], font="{0} {1} bold".format(fuente,tamano)).grid(column=12, row=1, sticky=(W))
        ttk.Label(tframe, text=dic[18], font="{0} {1} bold".format(fuente,tamano)).grid(column=13, columnspan=2,row=1, sticky=(W))

##        im = Image.open('Akali.jpeg')
##        tkim = ImageTk.PhotoImage(im)
##        ttk.Label(tframe, image=tkim).grid(column=1, row=1, sticky=(W))
##        Esto se borra
##        jugadores=['LuisOnOff','Pepe','Lucas','Ermenegildo','a87sd']
        hab={0:dic[19],1:dic[20],-1:dic[21],-2:dic[22],2:dic[23]}
        trolo={0:'-',1:'TROLL'}
        afk={0:'-',1:'AFK'}
        tkimage=[0]*25
##        infojugadores=[['No Team', 'Unranked', 'No Team', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ['No Team', 'Unranked', 'No Team', 'Wukong', 1, 0, 'Amumu', 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1295, 'Unranked', 1254, 'Heimerdinger', 6, 50, 'Caitlyn', 1, 100, 'Nunu', 1, 0, 'Tristana', 1, 0, 0, 0, 0], 0, 0]
##        im = Image.open('Akali.jpeg')
        for i in range(len(jugadores)):
            ttk.Label(tframe, text=jugadores[i]).grid(column=1, row=i+2, sticky=(W))
            try:
                ttk.Label(tframe, text=infojugadores[i][1]).grid(column=2, row=i+2, sticky=(W))
            except:
                ttk.Label(tframe, text=dic[45]).grid(column=2, row=i+2, sticky=(W))
            for h in range(5):
                try:
                    im = Image.open('Champions/medium_siespacio/{0}.jpg'.format(infojugadores[i][3+3*h]))
                    tkimage[i] = ImageTk.PhotoImage(im)
                    label=Label(tframe, image=tkimage[i])
                    label.image=tkimage[i]
                    label.grid(column=3+h, row=i+2, sticky=(N), ipady=18)#Determina la altura de las filas
                    if infojugadores[i][5+3*h]>=50:
                        ttk.Label(tframe, text='P:{0}  V:{1}%'.format(infojugadores[i][4+3*h],infojugadores[i][5+3*h]),foreground="dark green").grid(column=3+h, row=i+2, sticky=(S))
                    else:
                        ttk.Label(tframe, text='P:{0}  V:{1}%'.format(infojugadores[i][4+3*h],infojugadores[i][5+3*h]),foreground="red").grid(column=3+h, row=i+2, sticky=(S))
                    
                except:
                    pass
##            label=ttk.Label(tframe, image=tkimage[i]).grid(column=3, row=i+2, sticky=(W))
##            label.image=tkimage[i]
            if jugadores[i] in historial:
                try:
                    por1=int((historial[jugadores[i]][1])/(historial[jugadores[i]][0])*100)
                except:
                    por1='-'
                try:
                    por2=int((historial[jugadores[i]][3])/(historial[jugadores[i]][2])*100)
                except:
                    por2='-'
                
                ttk.Label(tframe, text=historial[jugadores[i]][0]).grid(column=8, row=i+2, sticky=(E))
                if por1=='-':
                    ttk.Label(tframe, text="{0}  %".format(por1)).grid(column=9, row=i+2, sticky=())
                elif por1<50:
                    ttk.Label(tframe, text="{0}  %".format(por1),foreground="red").grid(column=9, row=i+2, sticky=())
                else:
                    ttk.Label(tframe, text="{0}  %".format(por1),foreground="dark green").grid(column=9, row=i+2, sticky=())
                ttk.Label(tframe, text=historial[jugadores[i]][2]).grid(column=10, row=i+2, sticky=(E))
                if por2=='-':
                    ttk.Label(tframe, text="{0}  %".format(por2)).grid(column=11, row=i+2, sticky=())
                elif por2<50:
                    ttk.Label(tframe, text="{0}  %".format(por2),foreground="red").grid(column=11, row=i+2, sticky=())
                else:
                    ttk.Label(tframe, text="{0}  %".format(por2),foreground="dark green").grid(column=11, row=i+2, sticky=())
                ttk.Label(tframe, text=hab[historial[jugadores[i]][4]]).grid(column=12, row=i+2, sticky=())
                ttk.Label(tframe, text=trolo[historial[jugadores[i]][5]]).grid(column=13, row=i+2, sticky=())
                ttk.Label(tframe, text=afk[historial[jugadores[i]][6]]).grid(column=14, row=i+2, sticky=())
                
            else:
                ttk.Label(tframe, text=0).grid(column=8, row=i+2, sticky=(E))
                ttk.Label(tframe, text="-").grid(column=9, row=i+2, sticky=())
                ttk.Label(tframe, text=0).grid(column=10, row=i+2, sticky=(E))
                ttk.Label(tframe, text="-").grid(column=11, row=i+2, sticky=())
                ttk.Label(tframe, text=dic[19]).grid(column=12, row=i+2, sticky=())
                ttk.Label(tframe, text='-').grid(column=13, row=i+2, sticky=())
                ttk.Label(tframe, text='-').grid(column=14, row=i+2, sticky=())
            

        for child in tframe.winfo_children(): child.grid_configure(padx=2, pady=5) 

##        t.mainloop() 
    except:
##        textoinfo.set(dic[01])
        textoinfo.set('error mostrarinfo')
        pass



def terminainiciar(*args):
    try:
        botoniniciar["text"]=dic[24]
        botoniniciar["command"]=detener
        botonfin["state"]=NORMAL
        textoinfo.set(dic[48])
    except:
        textoinfo.set(dic[01])
##        print 'error'
        pass

def subirventanas(*args):
    try:
        indexmain= win32gui.FindWindow(None,'LoL Stats')
        win32gui.SetForegroundWindow(indexmain)

    except:
##        textoinfo.set(dic[01])
        textoinfo.set('error subirventanas')
        pass

def detener(*args):
    try:
        global vardetener
        vardetener=1
        botoniniciar["text"]=dic[26]
        botoniniciar["command"]=seleccioncampeon
        botonfin["state"]=DISABLED
        #Cierro ventanas abiertas de overlay
        for i in range(4):
            try:
                io[i].withdraw()
                elo[i].withdraw()
            except:
                pass
        try:
            botonshow.withdraw()
        except:
            pass
    
        textoinfo.set(dic[02])
    except:
        textoinfo.set(dic[01])
        pass

def todosjugadores(*args):
    try:
        global jugadores,campeonnow
        directory=opciones[3]+'/Logs/Game - R3d Logs/'
        files = os.listdir(directory)
        ##def find_most_recent(directory, partial_file_name):
##        directorys=["C:/Riot Games/League of Legends/Logs/Game - R3d Logs/",
##                    "D:/Riot Games/League of Legends/Logs/Game - R3d Logs/",
##                    "E:/Riot Games/League of Legends/Logs/Game - R3d Logs/"]
##        for i in range(3):
##            try:
### list all the files in the directory
##                files = os.listdir(directorys[i])
##                j=i
##            except:
##                pass
 
# remove all file names that don't match partial_file_name string
##files = filter(lambda x: x.find(partial_file_name) > -1, files)

# create a dict that contains list of files and their modification timestamps
        name_n_timestamp = dict([(x, os.stat(directory+x).st_mtime) for x in files])
 
# return the file with the latest timestamp
        archivo=max(name_n_timestamp, key=lambda k: name_n_timestamp.get(k))


        f = open (directory+archivo,"r")
##f = open ("C:/Riot Games/League of Legends/Logs/Game - R3d Logs/2012-09-07_21-01-12_r3dlog.txt","r")

##line = f.readline().decode('utf8')
        line = f.readline()
        campeonnow=[]
        jugadores=[]
        while line:
##            Se dan casos en los que el fichero contiene varias veces los nombres de jugadores. Reconexion?
            if len(jugadores)==10:
                break
            index=line.find("created for")
            if index>0:
                line=line.split()
                index2=line.index('created')
                campeonnowtemp=line[index2-1]
                index3=len(campeonnowtemp)
                campeonnow.append(campeonnowtemp[0:index3-3])
                resta=len(line)-(index2+2)
                jug=[]
                for i in range(resta):
                    jug.append(line[index2+2+i])
                for i in range(1,len(jug)):
                    jug[-i-1]=jug[-i-1]+' '+jug[-i]
                jugadores.append(jug[0])
##    line = f.readline().decode('utf8')
            line = f.readline()
##        print jugadores
##        Unidecode todos los strings de jugadores
        for j in range(len(jugadores)):
            jugadores[j]=unidecode(jugadores[j])

    except:
        textoinfo.set(dic[42])
        pass

def guardarinfo(*args):
    try:
        global historial
        venjug.destroy()
        ##        De prueba en vdd estara vacio
##        historial={'LuisOnOff':[1,1,3,3,0,0,0],'Pepe':[20,9,5,2,0,0,0]}
##        Almaceno informacion en variable historial y luego copio historial al fichero
        for i in range(len(jugadores)):
            if jugadores[i] in historial:
                historial[jugadores[i]][4]=int(round((historial[jugadores[i]][4]+int(puntuacion[i].get()))/2))
                if troll[i].get()=='1':
                    historial[jugadores[i]][5]=1
                else:
                    historial[jugadores[i]][5]=0
                if leaver[i].get()=='1':
                    historial[jugadores[i]][6]=1
                else:
                    historial[jugadores[i]][6]=0
            else:
##                Esto en vdd no se deberia ejecutar nunca
##                print 'Se ha ejecutado algo que no deberia ejecutarse nunca.'
                historial[jugadores[i]] = [0,0,0,0,0,0,0]
                historial[jugadores[i]][4]=int(round((historial[jugadores[i]][4]+int(puntuacion[i].get()))/2))
                if troll[i].get()=='1':
                    historial[jugadores[i]][5]=1
                else:
                    historial[jugadores[i]][5]=0
                if leaver[i].get()=='1':
                    historial[jugadores[i]][6]=1
                else:
                    historial[jugadores[i]][6]=0

        file = open('historial.txt', 'w')
        pickle.dump(historial, file)
        file.close()
##        print historial
        textoinfo.set(dic[27])
    except:
        textoinfo.set(dic[01])

        pass

def puntuarjug(equipo1,equipo2):
##    try:
        #esta linea se borra
##        global jugadores
        global venjug,troll,leaver,puntuacion
        venjug = Toplevel(root)
        venjug.title("LoL Stats - Rate Players")
        venjug.geometry('-5+50')
        jframe = ttk.Frame(venjug, padding="20 20 20 20")
        jframe.grid(column=0, row=0, sticky=(N, W, E, S))
##        tframe.columnconfigure(0, weight=1)
##        tframe.rowconfigure(0, weight=1)
        ttk.Label(jframe, text=dic[28]).grid(column=1, row=1,columnspan=9, sticky=())
        ttk.Label(jframe, text=dic[12]).grid(column=1, row=2,columnspan=2, sticky=())
        ttk.Label(jframe, text=dic[29]).grid(column=3, row=2,columnspan=5, sticky=())
        ttk.Label(jframe, text=dic[18]).grid(column=8, row=2,columnspan=2, sticky=())

        troll=[0,0,0,0,0,0,0,0,0,0]
        leaver=[0,0,0,0,0,0,0,0,0,0]
        puntuacion=[0,0,0,0,0,0,0,0,0,0]
        j=3
        for i in equipo1:
            try:
                im = Image.open('Champions/small_noespacio/{0}.jpg'.format(campeonnow[i]))
                tkimage = ImageTk.PhotoImage(im)
                label=Label(jframe, image=tkimage)
                label.image=tkimage
                label.grid(column=1, row=j, sticky=(W), ipady=0)#Determina la altura de las filas
            except:
                pass
            ttk.Label(jframe, text=jugadores[i]).grid(column=2, row=j, sticky=(W))
            puntuacion[i] = StringVar()
            puntuacion[i].set(0)
            ttk.Radiobutton(jframe, text=dic[21], variable=puntuacion[i], value=-1).grid(column=4, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[19], variable=puntuacion[i], value=0).grid(column=5, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[20], variable=puntuacion[i], value=1).grid(column=6, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[22], variable=puntuacion[i], value=-2).grid(column=3, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[23], variable=puntuacion[i], value=2).grid(column=7, row=j, sticky=())

            troll[i] = StringVar()
            ttk.Checkbutton(jframe, text='Troll', variable=troll[i]).grid(column=8, row=j, sticky=())
            leaver[i] = StringVar()
            ttk.Checkbutton(jframe, text='AFK', variable=leaver[i]).grid(column=9, row=j, sticky=())
            j+=1
##            ttk.Checkbutton(parent, text='Use Metric', command=metricChanged, variable=measureSystem,onvalue='metric', offvalue='imperial')

        ttk.Label(jframe, text=dic[30]).grid(column=1, row=8,columnspan=9, sticky=())
        ttk.Label(jframe, text=dic[12]).grid(column=1, row=9,columnspan=2, sticky=())
        ttk.Label(jframe, text=dic[29]).grid(column=3, row=9,columnspan=5, sticky=())
        ttk.Label(jframe, text=dic[18]).grid(column=8, row=9,columnspan=2, sticky=())
        j=10
        for i in equipo2:
            try:
                im = Image.open('Champions/small_noespacio/{0}.jpg'.format(campeonnow[i]))
                tkimage = ImageTk.PhotoImage(im)
                label=Label(jframe, image=tkimage)
                label.image=tkimage
                label.grid(column=1, row=j, sticky=(W), ipady=0)#Determina la altura de las filas
            except:
                pass
            
            ttk.Label(jframe, text=jugadores[i]).grid(column=2, row=j, sticky=(W))
            puntuacion[i] = StringVar()
            puntuacion[i].set(0)
            ttk.Radiobutton(jframe, text=dic[21], variable=puntuacion[i], value=-1).grid(column=4, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[19], variable=puntuacion[i], value=0).grid(column=5, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[20], variable=puntuacion[i], value=1).grid(column=6, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[22], variable=puntuacion[i], value=-2).grid(column=3, row=j, sticky=())
            ttk.Radiobutton(jframe, text=dic[23], variable=puntuacion[i], value=2).grid(column=7, row=j, sticky=())

            troll[i] = StringVar()
            ttk.Checkbutton(jframe, text='Troll', variable=troll[i]).grid(column=8, row=j, sticky=())
            leaver[i] = StringVar()
            ttk.Checkbutton(jframe, text='AFK', variable=leaver[i]).grid(column=9, row=j, sticky=())
            j+=1

        botonguardar=ttk.Button(jframe, text=dic[11], command=guardarinfo)
        botonguardar.grid(column=1,columnspan=9, row=20)
        for child in jframe.winfo_children(): child.grid_configure(padx=5, pady=5)        
##        venjug.mainloop()
##        return troll,leaver,puntuacion
##    except:
####        print 'Error'
##        textoinfo.set(dic[01])
##        pass

def finpartida(*args):
    try:
        global historial
        todosjugadores()
        x=tkMessageBox.askquestion(title='LoL Stats',message=dic[31],icon='question')

##        Almaceno informacion en variable historial y luego copio historial al fichero
##        if opciones[0] in jugadores:
        distmin=8
        ratiomax=0
        for i in range(len(jugadores)):
            ratiotemp=Levenshtein.ratio(jugadores[i],opciones[0])
            disttemp=Levenshtein.distance(jugadores[i],opciones[0])
            if ratiotemp>0.3 and disttemp<distmin:
                j=i
                ratiomax=ratiotemp
                distmin=disttemp
            elif ratiotemp>0.3 and disttemp==distmin and ratiotemp>ratiomax:
                j=i
                ratiomax=ratiotemp
                distmin=disttemp
        if distmin<8:
            indice=j
##            indice=jugadores.index(opciones[0])
            if indice<5:
                equipo1=[0,1,2,3]
                equipo2=[4,5,6,7,8]
            else:
                equipo1=[5,6,7,8]
                equipo2=[0,1,2,3,4]
##        Ahora guardo jugador para saber partidas jugadas totales y % victorias
            if jugadores[indice] in historial:
                historial[jugadores[indice]][0]+=1
            else:
                historial[jugadores[indice]] = [1,0,0,0,0,0,0]
            if x=='yes':
                historial[jugadores[indice]][1]+=1
            jugadores.remove(jugadores[indice])
            campeonnow.remove(campeonnow[indice])
            textoinfo.set(dic[32])
        else:
            equipo1=[0,1,2,3,4]
            equipo2=[5,6,7,8,9]
            textoinfo.set(dic[33])
##        #Primero aliados
        for i in equipo1:
            if jugadores[i] in historial:
                historial[jugadores[i]][0]+=1
            else:
                historial[jugadores[i]] = [1,0,0,0,0,0,0]
            if x=='yes':
                historial[jugadores[i]][1]+=1
##        Luego enemigos
        for i in equipo2:
            if jugadores[i] in historial:
                historial[jugadores[i]][2]+=1
            else:
                historial[jugadores[i]] = [0,0,1,0,0,0,0]
            if x=='yes':
                historial[jugadores[i]][3]+=1

        
        file = open('historial.txt', 'w')
        pickle.dump(historial, file)
        file.close()
##        Muestro ventana para puntuar
        puntuarjug(equipo1,equipo2)
##        Preparo para siguiente partida

        botoniniciar["text"]=dic[26]
        botoniniciar["command"]=seleccioncampeon
        botonfin["state"]=DISABLED
        
        ## Cierro overlay
        for i in range(4):
            try:
                io[i].withdraw()
                io2[i].withdraw()
                elo[i].withdraw()
            except:
                pass
        botonshow.withdraw()
        
    except:
        textoinfo.set(dic[42])
##        textoinfo.set('ERROOOOOR')
        pass

def mostrarocultar():
    seve=0
    for i in range(4):
        try:
            io2[i].withdraw()
        except:
            pass
    for i in range(4):
        try:
            if io[i].winfo_viewable():
                seve=1
        except:
            pass
            
    if seve==1:
        for i in range(4):
            try:
                io[i].withdraw()
            except:
                pass
    else:
        for i in range(4):
            try:
                io[i].update()
                io[i].deiconify()
            except:
                pass

def mostrarocultar2():
    seve=0
    for i in range(4):
        try:
            io[i].withdraw()
        except:
            pass
    for i in range(4):
        try:
            if io2[i].winfo_viewable():
                seve=1
        except:
            pass
            
    if seve==1:
        for i in range(4):
            try:
                io2[i].withdraw()
            except:
                pass
    else:
        for i in range(4):
            try:
                io2[i].update()
                io2[i].deiconify()
            except:
                pass

def infooverlay(*args):
    try:
        global io,io2,botonshow,elo

        ##  LO SIGUIENTE DEBE ESTAR COMENTADO
        esquinas=(69, 0, 1298, 768)
##        infojugadores=[[0, 1118, 0, 'Caitlyn', 7, 57, 'Sona', 2, 50, 'Darius', 2, 50, 'Janna', 1, 0, 'Ashe', 1, 100, 0, 1020, 0, 'Varus', 25, 40, 'Vladimir', 24, 58, 'Pantheon', 24, 50, 'Ashe', 22, 59, "Kog'Maw", 18, 44], [0, 1098, 0, 'Ezreal', 12, 58, 'Katarina', 5, 40, 'Jayce', 4, 50, 'Lux', 3, 67, 'Miss Fortune', 2, 50, 0, 1060, 0, 'Shaco', 48, 67, 'Sivir', 37, 57, 'Shyvana', 36, 47, 'Ahri', 34, 65, 'Lee Sin', 31, 39], [0, 1090, 0, 'Janna', 1, 0, 'Talon', 1, 0, 'Morgana', 1, 100, 'Cassiopeia', 1, 100, 'Irelia', 1, 0, 0, 1245, 0, 'Ashe', 34, 47, 'Lee Sin', 33, 52, 'Graves', 32, 56, 'Irelia', 31, 48, 'Malzahar', 28, 57], [0, 995, 0, 'Shaco', 6, 33, 'Vladimir', 6, 83, 'Malzahar', 3, 0, 'Ashe', 2, 50, 'Darius', 2, 50, 0, 626, 0, 'Shaco', 26, 50, 'Tryndamere', 18, 22, 'Alistar', 15, 33, 'Malzahar', 7, 29, 'Warwick', 7, 29], 0]
        ##  Calculo donde deben estar las ventanas segun donde este ventana lol
        alto=esquinas[3]-esquinas[1]
        ancho=esquinas[2]-esquinas[0]
        horizontal=esquinas[0]
        vertical=esquinas[1]+0.07*alto
        separacion=0.125*alto

### GENERO VENTANAS S3
        io=[0]*5
        elo=[0]*5
        nopropio=0
        for i in range(5):
            if i>indexpropio:
                espacio=i
                i=i-1
                nopropio=1
            else:
                espacio=i
            if (i==indexpropio and nopropio==0) or infojugadores[i]==0 or infojugadores[i][3]==0:
                pass
            else:
                ##### GENERO ELOS
                elo[i] = Toplevel(root)
                elo[i].configure(background = 'black')
                elo[i].wm_attributes("-topmost", 1)
                elo[i].geometry('+{0}+{1}'.format(int(round(horizontal+ancho*0.15)),int(round(vertical+alto*0.04+espacio*separacion))))
                elo[i].overrideredirect(1)
                ttk.Label(elo[i], text='ELO S3: {0}'.format(infojugadores[i][1]),background="black",foreground="white").grid(column=1, row=1, sticky=(W))
                ttk.Label(elo[i], text='ELO S2: {0}'.format(infojugadores[i][19]),background="black",foreground="white").grid(column=1, row=2, sticky=(W))
                        
                
                io[i] = Toplevel(root)
                io[i].configure(background = 'black')
                ##io.wm_attributes("-topmost", 1,"-alpha",0.8,"-transparentcolor",1)
                io[i].wm_attributes("-topmost", 1)
                io[i].geometry('+{0}+{1}'.format(int(round(horizontal)),int(round(vertical+espacio*separacion))))
                io[i].overrideredirect(1)

                tkimage=[0]*5
                for h in range(5):
                    try:
                        im = Image.open('Champions/medium_siespacio/{0}.jpg'.format(infojugadores[i][3+3*h]))
                        tkimage[0] = ImageTk.PhotoImage(im)
                        label=Label(io[i], image=tkimage[0], bg="black")
                        label.image=tkimage[0]
                        label.grid(column=0+h, row=1, sticky=(N), ipady=0)#Determina la altura de las filas
                        if infojugadores[i][5+3*h]>=50:
                            ttk.Label(io[i], text='P:{0}  V:{1}%'.format(infojugadores[i][4+3*h],infojugadores[i][5+3*h]),foreground="dark green", background="black").grid(column=0+h, row=2, sticky=(S))
                        else:
                            ttk.Label(io[i], text='P:{0}  V:{1}%'.format(infojugadores[i][4+3*h],infojugadores[i][5+3*h]),foreground="red",background="black").grid(column=0+h, row=2, sticky=(S))
                        
                    except:
                        pass

                ##fuente='Sans-serif'
                ##tamano='16'                     
                ##ttk.Label(ioframe, text='PRUEBA',font="{0} {1} bold".format(fuente,tamano)).grid(column=1, row=3, sticky=(W))
                ##                                
                    

                for child in io[i].winfo_children(): child.grid_configure(padx=3, pady=0)
        ##    io[i].mainloop()

### GENERO VENTANAS S2
        io2=[0]*5
        nopropio=0
        for i in range(5):
            if i>indexpropio:
                espacio=i
                i=i-1
                nopropio=1
            else:
                espacio=i
            if (i==indexpropio and nopropio==0) or infojugadores[i]==0 or infojugadores[i][3]==0:
                pass
            else:
                io2[i] = Toplevel(root)
                io2[i].configure(background = 'black')
                ##io.wm_attributes("-topmost", 1,"-alpha",0.8,"-transparentcolor",1)
                io2[i].wm_attributes("-topmost", 1)
                io2[i].geometry('+{0}+{1}'.format(int(round(horizontal)),int(round(vertical+espacio*separacion))))
                io2[i].overrideredirect(1)

                tkimage2=[0]*5
                for h in range(5):
                    try:
                        im = Image.open('Champions/medium_siespacio/{0}.jpg'.format(infojugadores[i][21+3*h]))
                        tkimage2[0] = ImageTk.PhotoImage(im)
                        label=Label(io2[i], image=tkimage2[0], bg="black")
                        label.image=tkimage2[0]
                        label.grid(column=0+h, row=1, sticky=(N), ipady=0)#Determina la altura de las filas
                        if infojugadores[i][23+3*h]>=50:
                            ttk.Label(io2[i], text='P:{0}  V:{1}%'.format(infojugadores[i][22+3*h],infojugadores[i][23+3*h]),foreground="dark green", background="black").grid(column=0+h, row=2, sticky=(S))
                        else:
                            ttk.Label(io2[i], text='P:{0}  V:{1}%'.format(infojugadores[i][22+3*h],infojugadores[i][23+3*h]),foreground="red",background="black").grid(column=0+h, row=2, sticky=(S))
                        
                    except:
                        pass

                ##fuente='Sans-serif'
                ##tamano='16'                     
                ##ttk.Label(ioframe, text='PRUEBA',font="{0} {1} bold".format(fuente,tamano)).grid(column=1, row=3, sticky=(W))
                ##                                
                    

                for child in io2[i].winfo_children(): child.grid_configure(padx=3, pady=0)
        ##    io[i].mainloop()

####OCULTO CAMPEONES
        for i in range(4):
            try:
                io[i].withdraw()
            except:
                pass
        for i in range(4):
            try:
                io2[i].withdraw()
            except:
                pass
#### Genero botones

        botonshow = Toplevel(root)
        botonshow.configure(background = 'black')
        botonshow.wm_attributes("-topmost", 1)
        botonshow.geometry('+{0}+{1}'.format(int(round(horizontal+ancho/2.2)),int(round(esquinas[1]+alto*0.03))))
        botonshow.overrideredirect(1)
##        botonframe = ttk.Frame(botonshow, padding="0 0 0 0")
##        botonframe.grid(column=0, row=0, sticky=(N, W, E, S))
        botonsw=ttk.Button(botonshow, text="Campeones S3", command=mostrarocultar)
        botonsw.grid(column=1, row=1)
        botonsw2=ttk.Button(botonshow, text="Campeones S2", command=mostrarocultar2)
        botonsw2.grid(column=2, row=1)


    except:
        textoinfo.set(dic[01])
        pass

def botoncorregirnombres(*args):
##    try:
        global jugadores,teamonestats,teamtwostats
        for i in range(len(jugadores)):
            if jugadores[i]!=jugadoresocr[i].get():
                jugadores[i]=jugadoresocr[i].get()
        nm.destroy()
        obteninfo()
        infooverlay()
##        mostrarinfo()
        textoinfo.set(dic[25])
        subirventanas()
##    except:
####        textoinfo.set(dic[01])
##        textoinfo.set('error botoncorregirnombres')
##        pass
    
def seleccioncampeon(*args):
    try:
        global vardetener
        vardetener=0
        esquinas=esquinaspantalla()
        imprimepantalla()
        cortaimagen(esquinas)
        ocr(esquinas)
        nombresmanual()
        subirventanas()
        terminainiciar()
    except:
        textoinfo.set(dic[01])
##        print 'error'
        pass

##window.geometry('300x200-5+40')
####para ordenarlas
##window.lift()
##window.lift(otherwin)
##window.lower()
##window.lower(otherwin)
    
######    EMPIEZA PROGRAMA
##    Inicializo variables
global version, root
version=0.7 #Version del 14 Noviembre cuando añadi elophant



##Leo diccionario
leerdic()

## Empieza pantalla principal
root = Tk()
##root.wm_attributes("-topmost", 1)
root.title("LoL Stats")
root.iconbitmap(default="lolicon.ico")
root.geometry('-5-50')
##root.geometry('450x100-5-5')
mainframe = ttk.Frame(root, padding="6 6 6 6")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

textoinfo = StringVar()
textoinfo.set(dic[02])
##textoinfo.set('Pulsa INICIAR cuando ya estes en la ventana de seleccion de campeon.')

ttk.Label(mainframe, textvariable=textoinfo, wraplength=300).grid(column=1, row=2, columnspan=3, sticky=())
botoniniciar=ttk.Button(mainframe, text=dic[26], command=seleccioncampeon)
botoniniciar.grid(column=1, row=1)
botonfin=ttk.Button(mainframe, text=dic[34], state=DISABLED, command=finpartida)
botonfin.grid(column=2, row=1)
botonconfig=ttk.Button(mainframe, text=dic[35], command=opciones)
botonconfig.grid(column=3, row=1)
    

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=5)



##Compruebo actualizaciones
comprobarversion()

##Leo historial
leerhistorial()

##Cargo opciones
cargaropciones()

##Compruebo historial grande
comprobarhistorialgrande()

##def task():
##    print "hello"
##    root.after(2000,task)  # reschedule event in 2 seconds
##
##root.after(2000,task)
##teamonestats,teamtwostats=({0: {'stats': {'statscampeon': {'avgdeaths': 4.7, 'avgkills': 7.0, 'avgassists': 4.8, 'jugadas': 6, 'victorias': 50}, 'statscampeonseason2': {'avgdeaths': 7.0, 'avgkills': 4.0, 'avgassists': 0.0, 'jugadas': 1, 'victorias': 0}, 'elosolo5v5season2': 0, 'elosolo5v5': 1209}, 'campeon': 'Cassiopeia', 'name': 'NeedABrain'}, 1: {'stats': {'statscampeon': {'avgdeaths': 4.7, 'avgkills': 3.0, 'avgassists': 13.3, 'jugadas': 3, 'victorias': 100}, 'statscampeonseason2': {'avgdeaths': 0, 'avgkills': 0, 'avgassists': 0, 'jugadas': 0, 'victorias': 0}, 'elosolo5v5season2': 1269, 'elosolo5v5': 1278}, 'campeon': 'Volibear', 'name': 'filaa'}, 2: {'stats': {'statscampeon': {'avgdeaths': 6.1, 'avgkills': 8.5, 'avgassists': 6.8, 'jugadas': 16, 'victorias': 44}, 'statscampeonseason2': {'avgdeaths': 7.5, 'avgkills': 13.5, 'avgassists': 6.5, 'jugadas': 2, 'victorias': 50}, 'elosolo5v5season2': 1166, 'elosolo5v5': 1180}, 'campeon': 'Caitlyn', 'name': 'coqiii'}, 3: {'stats': {'statscampeon': {'avgdeaths': 3.0, 'avgkills': 4.3, 'avgassists': 11.3, 'jugadas': 4, 'victorias': 75}, 'statscampeonseason2': {'avgdeaths': 5.4, 'avgkills': 6.6, 'avgassists': 6.5, 'jugadas': 39, 'victorias': 49}, 'elosolo5v5season2': 1043, 'elosolo5v5': 1157}, 'campeon': 'Mordekaiser', 'name': 'LuisOnOff'}, 4: {'stats': {'statscampeon': {'avgdeaths': 4.2, 'avgkills': 1.4, 'avgassists': 11.1, 'jugadas': 11, 'victorias': 55}, 'statscampeonseason2': {'avgdeaths': 0, 'avgkills': 0, 'avgassists': 0, 'jugadas': 0, 'victorias': 0}, 'elosolo5v5season2': 982, 'elosolo5v5': 1266}, 'campeon': 'Taric', 'name': 'NuZzas'}}, {0: {'stats': {'statscampeon': {'avgdeaths': 4.5, 'avgkills': 4.4, 'avgassists': 12.1, 'jugadas': 16, 'victorias': 44}, 'statscampeonseason2': {'avgdeaths': 3.3, 'avgkills': 6.8, 'avgassists': 9.8, 'jugadas': 19, 'victorias': 68}, 'elosolo5v5season2': 1213, 'elosolo5v5': 1272}, 'campeon': 'Dr. Mundo', 'name': 'Dnx92'}, 1: {'stats': {'statscampeon': {'avgdeaths': 0, 'avgkills': 0, 'avgassists': 0, 'jugadas': 0, 'victorias': 0}, 'statscampeonseason2': {'avgdeaths': 0, 'avgkills': 0, 'avgassists': 0, 'jugadas': 0, 'victorias': 0}, 'elosolo5v5season2': 1065, 'elosolo5v5': 1216}, 'campeon': 'Galio', 'name': 'NWEden'}, 2: {'stats': {'statscampeon': {'avgdeaths': 7.5, 'avgkills': 11.5, 'avgassists': 13.5, 'jugadas': 2, 'victorias': 50}, 'statscampeonseason2': {'avgdeaths': 5.5, 'avgkills': 9.0, 'avgassists': 8.1, 'jugadas': 61, 'victorias': 59}, 'elosolo5v5season2': 1252, 'elosolo5v5': 1156}, 'campeon': 'Miss Fortune', 'name': 'batblind'}, 3: {'stats': {'statscampeon': {'avgdeaths': 0, 'avgkills': 0, 'avgassists': 0, 'jugadas': 0, 'victorias': 0}, 'statscampeonseason2': {'avgdeaths': 1.7, 'avgkills': 1.3, 'avgassists': 2.3, 'jugadas': 3, 'victorias': 67}, 'elosolo5v5season2': 1140, 'elosolo5v5': 1176}, 'campeon': 'Irelia', 'name': 'the tosty'}, 4: {'stats': {'statscampeon': {'avgdeaths': 5.9, 'avgkills': 1.8, 'avgassists': 12.6, 'jugadas': 9, 'victorias': 33}, 'statscampeonseason2': {'avgdeaths': 6.3, 'avgkills': 1.0, 'avgassists': 12.8, 'jugadas': 4, 'victorias': 25}, 'elosolo5v5season2': 0, 'elosolo5v5': 1185}, 'campeon': 'Sona', 'name': 'KojiroSasaki93'}})

root.mainloop()
